# include <iostream>
# include <string>
# define N 10

using namespace std;

struct chengji
{
    string xinmin;
    float yuwen;
    float  shuxue;
    float  yingyu;
};

// 录入学生信息
void lr(chengji ren[],int n)
{
    int i = 0;
    for(i;i<n;i++)
    {
        cout << "请输入学生的姓名： " << endl;
        cin >> ren[i].xinmin;
        cout << "请按照语、数、外的顺序输入该学生各科成绩： " << endl;
        cin >> ren[i].yuwen >> ren[i].shuxue  >> ren[i].yingyu;
    }
       
}

// 计算总分
void zf(chengji ren[],int n,float (&zf)[N])
{
    int i = 0;
    // float zf[n];
    for(i;i<n;i++)
    {
        zf[i] = ren[i].yuwen + ren[i].shuxue + ren[i].yingyu;
        cout << ren[i].xinmin << "的总成绩为：" << zf[i] << endl;
    }
}

// 计算单科平均分
void pj(chengji ren[],int n)
{
    int i = 0;
    float pj[3] = {0,0,0};
    for(i;i<n;i++)
    {
        pj[0] += ren[i].yuwen;
        pj[1] += ren[i].shuxue;
        pj[2] += ren[i].yingyu;
    }
    cout << "语文单科平均分：" << pj[0] / n << endl;
    cout << "数学单科平均分：" << pj[1] / n << endl;
    cout << "英语单科平均分：" << pj[2] / n << endl;
}

// 找出总分最大和最小的学生
void zz(chengji ren[],int n,const float (&zf)[N])
{
    int i = 0, j, k;
    float max = 0,min = zf[0];
    for(i;i<n;i++)
    {
        if(max <= zf[i])
        {
            max = zf[i];
            j = i;
        }
        if(min >= zf[i])
        {
            min = zf[i];
            k = i;
        }
    }
    cout << "班级中总分最高的是：" << ren[j].xinmin << "--" << "分数为" << max << endl;
    cout << "班级中总分最低的是：" << ren[k].xinmin << "--" << "分数为" << min << endl;
}

int main()
{
    float zonshu[N];     //用于保存总分这个数据，便于在求大小值的函数中使用
    chengji ren[N];
    lr(ren,N);           //调用lr函数，录入学生信息
    zf(ren,N,zonshu);    // 调用zf函数，求个人总分
    pj(ren,N);           //调用pj函数，求各科平均 
    zz(ren,N,zonshu);    //调用zz函数，求最高、低分
    return 0;
}
